package cn.darkhorse.device.service;

import cn.darkhorse.device.dto.MesRepairInfoDTO;
import cn.darkhorse.device.dto.MesReportDTO;
import cn.darkhorse.device.pojo.MesRepairInfo;
import cn.darkhorse.device.vo.LineReportVO;
import cn.darkhorse.device.vo.MesRepairInfoVO;
import cn.darkhorse.device.vo.PieReportVO;
import cn.darkhorse.messystem.vo.SysUserVO;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;

/**
 * <p>
 * 维修单 服务类
 * </p>
 *
 * @author maoguanjun
 * @since 2022-11-11
 */
public interface MesRepairInfoService extends IService<MesRepairInfo> {

    /**
     * 列表
     * @param mesRepairInfoDTO
     * @return
     */
    List<MesRepairInfoVO> listAll(MesRepairInfoDTO mesRepairInfoDTO);

    /**
     * 查看
     * @param id
     * @return
     */
    MesRepairInfoVO view(Long id);

    /**
     * 保存
     * @param mesRepairInfo
     * @return
     */
    boolean saveMesRepairInfo(MesRepairInfo mesRepairInfo);

    /**
     * 删除
     * @param id
     * @return
     */
    boolean delete(Long id);

    /**
     * 派单
     * @param userId
     * @return
     */
    boolean dispatch(Long id,Long userId);

    boolean dispatch2(Long id,String userIds);

    /**
     * 取消派单
     * @param id
     * @return
     */
    boolean cancelDispatch(Long id);

    /**
     * 接单
     * @param id
     * @param receiver
     * @return
     */
    boolean receive(Long id, Long receiver);

    /**
     * 登记
     *
     * @param mesRepairInfoDTO
     * @return
     */
    boolean registration(MesRepairInfoDTO mesRepairInfoDTO);

    /**
     * 评价
     * @param id
     * @param level
     * @param content
     * @return
     */
    boolean evaluate(Long id, Integer level, String content,Long userId);

    /**
     * 提交
     * @param id
     * @return
     */
    boolean submit(Long id);

    /**
     * 审核通过
     * @param id
     * @param approver
     * @param approveTime
     * @param auditStatus
     * @return
     */
    boolean audit(Long id, Long approver, String approveTime, Integer auditStatus);

    /**
     * 弃审
     * @param id
     * @return
     */
    boolean waiver(Long id);

    /**
     * 设备维修分析
     * @param repairReportDTO
     * @return
     */
    LineReportVO deviceAnalyse(MesReportDTO repairReportDTO);

    /**
     * 故障类型分析
     * @param repairReportDTO
     * @return
     */
    List<PieReportVO> faultTypeAnalysePie(MesReportDTO repairReportDTO);

    /**
     * 故障类型分析折线图
     * @param repairReportDTO
     * @return
     */
    LineReportVO faultTypeAnalyseLine(MesReportDTO repairReportDTO);

    /**
     * 维修类型分析
     * @param repairReportDTO
     * @return
     */
    List<PieReportVO> repairTypeAnalysePie(MesReportDTO repairReportDTO);

    /**
     * 维修类型分析折线图
     * @param repairReportDTO
     * @return
     */
    LineReportVO repairTypeAnalyseLine(MesReportDTO repairReportDTO);

    /**
     * MTTR折线图
     * @param repairReportDTO
     * @return
     */
    LineReportVO MTTRLine(MesReportDTO repairReportDTO);


    /**
     * 查询班组人员状态
     * @param list
     */
    void getUserStatus(List<SysUserVO> list);
}
